JavaScript 56.7%
TypeScript 42.6%
1import { NextRequest, NextResponse } from "next/server";2import { prisma } from "@/lib/prisma";3import { saveVersion } from "@/lib/storage";4import { logActivity } from "@/lib/activity";56export async function GET(7 request: NextRequest,8 { params }: { params: { id: string } }9) {10 const versions = await prisma.fileVersion.findMany({11 where: { fileId: params.id },12 orderBy: { versionNum: "desc" },13 });1415 return NextResponse.json(16 versions.map((v) => ({ ...v, size: Number(v.size) }))17 );18}1920export async function POST(21 request: NextRequest,22 { params }: { params: { id: string } }23) {24 const file = await prisma.file.findUnique({ where: { id: params.id } });2526 if (!file) {27 return NextResponse.json({ error: "File not found" }, { status: 404 });28 }2930 const body = await request.json().catch(() => ({}));31 const changeNote = body.changeNote || "Manual snapshot";3233 const versionCount = await prisma.fileVersion.count({ where: { fileId: file.id } });34 const result = await saveVersion(file.storagePath, file.name);3536 const version = await prisma.fileVersion.create({37 data: {38 fileId: file.id,39 versionNum: versionCount + 1,40 storagePath: result.storagePath,41 size: BigInt(result.size),42 changeNote,43 },44 });4546 await logActivity("VERSION_CREATE", file.id, `Version ${version.versionNum} created`);4748 return NextResponse.json({ ...version, size: Number(version.size) }, { status: 201 });49}50